<?php

/** La configuración esperada en el .ini es:
 * 
 	[dependencies]
 	  	ClaseDependencia.InstanceStrategy = "Singleton"
 **/

/*
 * Se asegura una unica instancia por cada clase invocada. 
 * Para esto usa un mapa de instancias [Clase]=>Instancia.
 * 
 * */
class Exts_Dependency_Instantiator_Singleton extends Exts_Dependency_Instantiator_Abstract {
	
	protected static $_instances = array();
	protected static $_instance;
	
	public static function InstantiatorInstance () {
		if (empty(self::$_instance)) {
			self::$_instance = new Exts_Dependency_Instantiator_Singleton();
		}
		return self::$_instance;
	}
	
	protected function _makeAnInstance($className) {
		if (array_key_exists($className, self::$_instances)) {
			$instance = self::$_instances[$className];
		}
		if (empty($instance)){
				self::$_instances[$className] = new $className();
		}
		return self::$_instances[$className];
	}
	
	
}
